using System.Collections.Generic;
using Kugar.Core.BaseStruct;

namespace Kugar.ERPFramework.Core.Interfaces.BLL
{
    public interface IExecutable
    {
        bool IsExecutable(Entity.EntityBase entity);
        bool IsExecutable(string entityID);

        ResultReturn Execute(Entity.EntityBase entity);
        ResultReturn Execute(string entityID);

        ResultReturn Execute(IEnumerable<Entity.EntityBase> entityList);
        ResultReturn Execute(IEnumerable<string> entityIDList);
    }

    public interface IAntiExecutable
    {
        bool IsAntiExecutable(Entity.EntityBase entity);
        bool IsAntiExecutable(string entityID);

        ResultReturn AntiExecutable(Entity.EntityBase entity);
        ResultReturn AntiExecutable(string entityID);

        ResultReturn AntiExecutable(IEnumerable<Entity.EntityBase> entityList);
        ResultReturn AntiExecutable(IEnumerable<string> entityIDList);
    }

    public interface IRedable
    {
        bool IsRedable(Entity.EntityBase entity);
        bool IsRedable(string entityID);

        ResultReturn Red(Entity.EntityBase entity);
        ResultReturn Red(string entityID);

        ResultReturn Red(IEnumerable<Entity.EntityBase> entityList);
        ResultReturn Red(IEnumerable<string> entityIDList);
    }
}
